<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>

        
        // 静态成员 ：属于类的 不属于 实例化对象的成员；，不需要实例化 
        // ES5；
        // 1.静态属性 2.静态方法 
        // let num = 0;
        // function Person(name){
        //     this.name = name;
        //     // this.num = 0;
        //     // num++;
        //     // console.log(Person.num);
        //     Person.num++;
        // } 
        // Person.num = 0;
        // Person.num = 0;  // 静态属性
        // Person.fn = function(){  // 静态方法 
        //     console.log("fn");
        // }


        // console.log(Person.num);
        // Person.fn();

        // 统计Person类实例化的次数；
        // let zhangsan = new Person("张三");
        // let lisi = new Person("李四");
        // console.log(Person.num);



        // ES6 静态成员
    //     class Person{
    //         static num = 0; // 静态属性
    //         constructor(name){
    //             this.name = name;
    //         }
    //         static fn(){
    //             console.log("fn");// 静态方法
    //         }
    //     }

    //    console.log(  Person.num);
    //    Person.fn();


    // 单例模式： 一个类只保证有一个实例； window  document  store 

    class Person{
        static instance = null;  // 通过 instance保存实例化的状态；
        constructor(name){
            this.name = name;
            if(!Person.instance){
                // 没有实例化 ，就通过Person.instance 静态属性保存 实例
                Person.instance = this;
            }else{
                // 已经实例化过了 ，直接获取静态属性 返还；
                return Person.instance;
            }
        }
    }

    let zhangsan  = new Person("张三");
    let lisi = new Person("李四");
    console.log(zhangsan,lisi);







    </script>
</body>
</html>